package com.ltx.bugseeker.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.ltx.bugseeker.utils.PostgresJsonbTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 测试报告实体类
 * 对应数据库中的测试报告表，记录测试报告信息
 * 
 * @author ltx
 * @since 2025-10-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("bs_test_report")
public class TestReport extends BaseEntity {
    
    /**
     * 项目ID（关联项目表）
     */
    @TableField("project_id")
    private Long projectId;
    
    /**
     * 报告名称
     */
    @TableField("name")
    private String name;
    
    /**
     * 报告类型
     * 1-测试用例报告, 2-接口测试报告, 3-UI测试报告, 4-压力测试报告, 5-综合报告
     */
    @TableField("type")
    private Integer type;
    
    /**
     * 报告数据（JSON格式）
     */
    @TableField(value = "data", typeHandler = PostgresJsonbTypeHandler.class)
    private String data;
    
    /**
     * 配置（JSON格式）
     */
    @TableField(value = "configuration", typeHandler = PostgresJsonbTypeHandler.class)
    private String configuration;
    
    /**
     * 生成人ID（关联用户表）
     */
    @TableField("generated_by")
    private Long generatedBy;
    
    /**
     * 生成时间
     */
    @TableField("generated_time")
    private LocalDateTime generatedTime;
    
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标识
     * 0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
    
    /**
     * 备注信息
     */
    @TableField("remark")
    private String remark;
}